// 切换必填
export function getRequired({ values }, key, propData) {
  console.log('valuesdd', values, 'key', key, 'values[key]', values[-key]);

  const { requried, list: restorePROptionDtoList } = propData;

  console.log('requried', requried, restorePROptionDtoList);

  if (restorePROptionDtoList && restorePROptionDtoList.length <= 1) {
    return requried;
  } else {
    if (values[-key] == 0) {
      return false;
    } else if (values[-key] == 1) {
      return requried;
    }
  }
}

/**
 * 扩展属性
 * 把表单数据赋值给需要提交的值
 * @param target 原始数据
 * @param original 表单数据
 * @param codeKey 表单key
 * @param valKey 提交key
 * @returns []
 *
 */
export function getDynamicFormData(target, original, codeKey, valKey) {
  const result = target.map((item) => {
    for (const [key, val] of Object.entries(original)) {
      if (item[codeKey] == key) {
        item[valKey] = val ?? '';
      }
    }
    return {
      ...item,
    };
  });

  return result;
}

/**
 * 表头属性
 * 把表单数据赋值给需要提交的值,表头属性做特殊处理
 * @param target 原始数据
 * @param original 表单数据
 * @param [codeKey 表单key, valKey 提交key, valOptionKey 回传key, restorePROptionDtoList 回传判断]
 * @returns []
 *
 */
export function getPropDynamicFormData(
  target,
  original,
  [codeKey, valKey, valOptionKey, restorePROptionDtoList],
) {
  const result = target.map((item) => {
    for (const [key, val] of Object.entries(original)) {
      if (item[codeKey] == key) {
        if (item[restorePROptionDtoList] && item[restorePROptionDtoList].length) {
          item[valOptionKey] = val ?? '';
        } else {
          item[valKey] = val ?? '';
          item[valOptionKey] = null;
        }
      }
    }
    return {
      ...item,
    };
  });

  return result;
}

/**
 * 角色属性
 * 把表单数据赋值给需要提交的值,角色做特殊处理
 * @param target 原始数据
 * @param original 表单数据
 * @param codeKey 表单key
 * @param valKey 提交key
 * @returns []
 *
 */
export function getRoleDynamicFormData(
  target,
  original,
  [codeKey, valKey, valOptionKey, restorePROptionDtoList],
) {
  const result = target.map((item) => {
    for (const [key, val] of Object.entries(original) as [string, any]) {
      if (item[codeKey] == key) {
        if (item[restorePROptionDtoList] && item[restorePROptionDtoList].length) {
          item[valOptionKey] = val ?? '';
        } else {
          item[valKey] = val && val.map((item) => ({ id: item.userId, name: item.name }));
          item[valOptionKey] = null;
        }
      }
    }
    return {
      ...item,
    };
  });

  return result;
}
